//
// Created by yanhai on 2020/3/31.
//

#include <iostream>

using namespace std;

class Complex {
public:
    Complex() = default;

    Complex(int re, int im) : re(re), im(im)
    {
        cout << "构造函数(" << re << "," << im << ")" << endl;
    }

    ~Complex()
    {
        cout << "析构函数(" << re << "," << im << ")" << endl;
    }

private:
    int re, im;
};

/**
 * 全局对象：
 *  程序运行前创建该对象
 *  程序结束后释放该对象
 */
Complex c(1,2);

void test()
{
    /**
     * 程序第一次执行到这一行时，才会创建该对象
     * 对象被创建后，程序结束后才会释放该空间（在全局对象之前释放）
     */
    static Complex c1(3,4);
}

int main()
{
    cout << "main start" << endl;
    /**
     * 程序执行到这一行时，才会创建该对象
     * 函数结束后，对象就会被释放
     */
    Complex c2(5,6);
    test();
    cout << "main end" << endl;
}
